﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sistema_Test_OnLine.Persistence;

namespace Sistema_Test_OnLine.Model
{
    public class PreguntaDB
    {
        private AccessDB accessDB;
        public PreguntaDB()
        {
            accessDB = new AccessDB();
        }

        public void add(Pregunta pregunta)
        {
            accessDB.Connect();
            accessDB.Update("Insert into pregunta(enunciado, explicacion, solucion1, solucion2, solucion3, solucion4, opcion1, opcion2, opcion3, opcion4, tipo, examen, imagen) values ('" + pregunta.Enunciado + "','" + pregunta.Explicacion + "','" + pregunta.Solucion1 + "','" + pregunta.Solucion2 + "','" + pregunta.Solucion3 + "','" + pregunta.Solucion4 + "','" + pregunta.Opcion1 + "','" + pregunta.Opcion2 + "','" + pregunta.Opcion3 + "','" + pregunta.Opcion4 + "','" + pregunta.Tipo + "','" + pregunta.Examen + "','" + pregunta.Imagen + "')");
            accessDB.Disconnect();
        }

        public List<Pregunta> GetPreguntas(string criterio)
        {
            accessDB.Connect();
            if (!criterio.Equals(""))
                criterio = "codigo='" + criterio + "' or examen like '%" + criterio + "%'";
            accessDB.Find("pregunta", criterio);
            List<Pregunta> prodL = new List<Pregunta>();


            while (accessDB.Next())
            {
                Pregunta preg = new Pregunta(accessDB.GetInt("codigo"), accessDB.GetString("enunciado"), accessDB.GetString("explicacion"), accessDB.GetString("solucion1"), accessDB.GetString("solucion2"), accessDB.GetString("solucion3"), accessDB.GetString("solucion4"), accessDB.GetString("opcion1"), accessDB.GetString("opcion2"), accessDB.GetString("opcion3"), accessDB.GetString("opcion4"), accessDB.GetString("tipo"), accessDB.GetString("examen"), accessDB.GetString("imagen"));

                prodL.Add(preg);
            }
            accessDB.Disconnect();
            return prodL;
        }

        public void RemovePregunta(int cod)
        {
            accessDB.Connect();
            accessDB.Update("Delete from pregunta where codigo=" + cod);
            accessDB.Disconnect();
        }
        public void UpdatePregunta(Pregunta preg)
        {
            accessDB.Connect();
            accessDB.Update("Update pregunta set enunciado='" + preg.Enunciado + "', explicacion='" + preg.Explicacion + "', solucion1='" + preg.Solucion1 + "', solucion2='" + preg.Solucion2 + "', solucion3='" + preg.Solucion3 + "', solucion4='" + preg.Solucion4 + "', opcion1='" + preg.Opcion1 + "', opcion2='" + preg.Opcion2 + "', opcion3='" + preg.Opcion3 + "', opcion4='" + preg.Opcion4 + "', tipo='" + preg.Tipo + "', examen='" + preg.Examen + "', imagen='" + preg.Imagen + "' where codigo=" + preg.Codigo);
            accessDB.Disconnect();
        }

        public Pregunta FindProduct(int cod)
        {
            accessDB.Connect();
            accessDB.Find("pregunta", "codigo=" + cod);
            Pregunta pre = null;
            if (accessDB.Next())
            {
                pre = new Pregunta(accessDB.GetInt("codigo"), accessDB.GetString("enunciado"), accessDB.GetString("explicacion"), accessDB.GetString("solucion1"), accessDB.GetString("solucion2"), accessDB.GetString("solucion3"), accessDB.GetString("solucion4"), accessDB.GetString("opcion1"), accessDB.GetString("opcion2"), accessDB.GetString("opcion3"), accessDB.GetString("opcion4"), accessDB.GetString("tipo"), accessDB.GetString("examen"), accessDB.GetString("imagen"));

            }
            accessDB.Disconnect();
            return pre;
        }

    }
}